docs: refresh release archive guidance#480
Conversation
📝 WalkthroughWalkthroughThis PR replaces a static release table with a data-driven VersionsTable that classifies releases by current/previous minor series, updates support-policy wording and licensing/USB install guidance, and integrates the new component into the download page. ChangesSupport Policy and Dynamic Release Table
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
unraid-docs | 75a0d30 | Commit Preview URL Branch Preview URL |
May 21 2026, 08:52 PM |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/components/VersionsTable.tsx`:
- Around line 22-28: parseVersion treats unknown token parts as 0, which makes
compact prerelease tokens like "rc8" or "beta2" compare equal to the release;
update the parseVersion function to detect tokens matching /^(rc|beta)(\d+)$/i,
map "rc" to -1 and "beta" to -2, and include the parsed numeric suffix (e.g.,
rc8 -> [-1,8], beta2 -> [-2,2]) so comparative ordering distinguishes
prereleases from final releases; keep the existing behavior for plain "rc" or
"beta" and fallback to Number.parseInt with 0 for any other unknown parts.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 9bbe47cb-1a1f-4ab6-93a4-d42bed422a75
📒 Files selected for processing (4)
docs/unraid-os/download_list.mdxdocs/unraid-os/troubleshooting/licensing-faq.mdxdocs/unraid-os/updating-unraid/release-types.mdxsrc/components/VersionsTable.tsx
a99a04b to
ebb55e1
Compare
- Purpose: add the EOL support-policy changes to the release archive docs branch. - Before: the version archive grouped releases by stable, previous, and legacy without clearly explaining superseded builds or EOL support boundaries. - Problem: users could confuse archived or older patch builds with currently supported update targets. - Now: the docs define supported minor series, superseded patch builds, and EOL releases across the archive, licensing FAQ, and release-types guide. - Implementation: simplify the VersionsTable status filters, mark current and previous series support status dynamically, and update the 7.3.0 release notes to stable-release wording.
ebb55e1 to
c2b38a2
Compare
There was a problem hiding this comment.
🧹 Nitpick comments (1)
docs/unraid-os/troubleshooting/licensing-faq.mdx (1)
131-131: ⚡ Quick winUse relative link for internal documentation reference.
The link to the Version Archive uses an absolute URL, while other internal doc links in this file use relative paths. For Docusaurus best practices and consistency, use a relative link:
-- You can see the current support status of each release in the [Version Archive](https://docs.unraid.net/unraid-os/download_list/). +- You can see the current support status of each release in the [Version Archive](../../download_list.mdx).This ensures proper navigation, link checking, and versioning support.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/unraid-os/troubleshooting/licensing-faq.mdx` at line 131, Replace the absolute URL used for the "Version Archive" link with a relative path to match other internal documentation links in the file; locate the markdown link labeled "Version Archive" in docs/unraid-os/troubleshooting/licensing-faq.mdx and change its href from the full https://... URL to the appropriate relative path (e.g., ./ or ../ path consistent with other internal links) so Docusaurus link checking, navigation, and versioning work correctly.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@docs/unraid-os/troubleshooting/licensing-faq.mdx`:
- Line 131: Replace the absolute URL used for the "Version Archive" link with a
relative path to match other internal documentation links in the file; locate
the markdown link labeled "Version Archive" in
docs/unraid-os/troubleshooting/licensing-faq.mdx and change its href from the
full https://... URL to the appropriate relative path (e.g., ./ or ../ path
consistent with other internal links) so Docusaurus link checking, navigation,
and versioning work correctly.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 3ee02532-afb0-4b90-9a44-7e16a69e0562
📒 Files selected for processing (4)
docs/unraid-os/download_list.mdxdocs/unraid-os/troubleshooting/licensing-faq.mdxdocs/unraid-os/updating-unraid/release-types.mdxsrc/components/VersionsTable.tsx
✅ Files skipped from review due to trivial changes (2)
- docs/unraid-os/download_list.mdx
- docs/unraid-os/updating-unraid/release-types.mdx
- Purpose: fix the PR lint failure and unresolved CodeRabbit prerelease sorting suggestion. - Before: the 7.2.7 release note had two top-level headings, and compact tokens like rc8 or beta2 were parsed as 0. - Problem: remark failed on duplicate H1s, and prerelease rows could compare equal to final releases or other prereleases. - Change: demote the version heading, format the release note, and expand compact beta/rc tokens into prerelease rank plus numeric suffix. - How: parseVersion now handles betaN and rcN case-insensitively while preserving existing plain beta/rc and numeric fallback behavior.
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/components/VersionsTable.tsx (1)
111-120: ⚡ Quick winAdd AbortController to prevent state updates on unmounted component.
The fetch lacks cleanup, which can cause memory leaks or React warnings if the component unmounts before the request completes. This is especially noticeable in StrictMode.
♻️ Proposed fix with AbortController
useEffect(() => { + const controller = new AbortController(); - fetch("https://releases.unraid.net/json?includePublic=1") + fetch("https://releases.unraid.net/json?includePublic=1", { + signal: controller.signal, + }) .then((response) => response.json()) .then((data: Release[]) => setReleases( [...data].sort((a, b) => compareVersions(a.version, b.version)), ), ) - .catch(console.error); + .catch((error) => { + if (error.name !== "AbortError") { + console.error(error); + } + }); + return () => controller.abort(); }, []);🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/components/VersionsTable.tsx` around lines 111 - 120, The fetch in the VersionsTable component needs an AbortController to avoid updating state after unmount; create an AbortController inside the useEffect, pass controller.signal to fetch, and in the cleanup function call controller.abort(); update the .catch to ignore AbortError (or check error.name === 'AbortError') so setReleases is not called after abort, and ensure setReleases is only invoked when the fetch wasn't aborted (i.e., check controller.signal.aborted or handle in the catch) so you avoid React warnings and leaks.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@src/components/VersionsTable.tsx`:
- Around line 111-120: The fetch in the VersionsTable component needs an
AbortController to avoid updating state after unmount; create an AbortController
inside the useEffect, pass controller.signal to fetch, and in the cleanup
function call controller.abort(); update the .catch to ignore AbortError (or
check error.name === 'AbortError') so setReleases is not called after abort, and
ensure setReleases is only invoked when the fetch wasn't aborted (i.e., check
controller.signal.aborted or handle in the catch) so you avoid React warnings
and leaks.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 5ef80044-9077-448f-8189-25ba74c083ed
📒 Files selected for processing (2)
docs/unraid-os/release-notes/7.2.7.mdsrc/components/VersionsTable.tsx
✅ Files skipped from review due to trivial changes (1)
- docs/unraid-os/release-notes/7.2.7.md
Summary
rc8andbeta2when sorting release versions.Validation
pnpm exec prettier --check src/components/VersionsTable.tsx docs/unraid-os/release-notes/7.2.7.mdpnpm exec remark docs/unraid-os/release-notes/7.2.7.md --quiet --frailpnpm run lint:mdxrc8,rc8ahead ofrc1, andrc1ahead ofbeta2.pnpm exec tsc --ignoreDeprecations 6.0(fails on existing unrelated type errors in RedirectList, ReleasesList, and theme Layout files)75a0d30.Summary by CodeRabbit
Documentation
Refactor